home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ugoku / src.lzh / MOVREC / MRCXEDT.C < prev    next >
Text File  |  1994-06-01  |  23KB  |  956 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include <file_dlg.h>
  9. #include <tifflib.h>
  10. #include <egb.h>
  11. #include <mos.h>
  12. #include <snd.h>
  13. #include "ugoku.h"
  14. #include "mrcdef.h"
  15.  
  16. extern    int        mouseSwCheck() ;
  17. extern    int        errorCheck( int ) ;
  18.  
  19. extern    char    *guiEgbPtr ;    /*    EGB é╠âÅü[âNâAâhâîâX    */
  20. extern    char    *rbuf ;            /*    Ä⌐ë╞É╗é╠âÅü[âNâAâhâîâX    */
  21. extern    char    *bbuf ;            /*    Ä⌐ë╞É╗é╠âÅü[âNâAâhâîâX    */
  22.  
  23. extern int    baseDialogId ;
  24.  
  25. int    edtDialogId[32] = -1 ;
  26. int    edtNumId[14] = -1 ;
  27. int    edtPNumId[15] = -1 ;
  28. int    edtMesId[52] = -1 ;
  29. int    edtScroId[15] = -1 ;
  30. int    edtSFDialogId[10] = -1 ;
  31. int    edtSFMesId[10] = -1 ;
  32. int    edtBtnId[20] = -1 ;
  33. int    edtWNumId[1] = -1 ;
  34. int    edtRecNumId[4] = -1 ;
  35. int    edtRecBtnId = -1 ;
  36. int    edtOkBtnId = -1 ;
  37. int    edtCanBtnId = -1 ;
  38. int    edtTIconId[2] = -1 ;
  39. int    edtSndDialogId = -1 ;
  40. int    edtSndListId = -1 ;
  41. int    edtSndScrId = -1 ;
  42. int    edtSndOkBtnId = -1 ;
  43. int    edtSndCanBtnId = -1 ;
  44. int    edtSndMesId[3] = -1 ;
  45.  
  46. static int sndNum[14] ;
  47. static int sndPan[15] ;
  48. static int rect[4] ;
  49. static int mainWait ;
  50. static int timingMode ;
  51. static char fileName[10][16] ;
  52. static int setFlag ;
  53. static char movFileName[100] ;
  54. static int ch71Flag = 1 ;
  55.  
  56. movEdit( namemov )
  57. char *namemov ;
  58. {
  59.     extern int editFrame( char *, char [][16], int ) ;
  60.  
  61.     FILE *fp;
  62.     char head[256];
  63.     int error ;
  64.     int i, j, ret, temp ;
  65.     int movframe, movx0, movy0, movx1, movy1, movwait ;
  66.     int var, min, max, delta, ptColumn ;
  67.     int prt, len, page ;
  68.  
  69. sv01:
  70.     for( i=0 ; i<80 ; i++ )
  71.     {
  72.         movFileName[i] = namemov[i] ;
  73.         if( namemov[i] == '\0' )break ;
  74.     }
  75.  
  76.     ret = mov_head_read_and_dsp( namemov, &movframe, &movx0, &movy0,
  77.     &movx1, &movy1, &movwait, 0, TL_malloc, TL_free );    /* ë║é╠ëµû╩é╔ò\Ī */
  78.     if( ret )return ret ;
  79.  
  80.     if( ( fp = fopen( namemov, "rb" ) ) == NULL )return 1;    /* read head */
  81.     temp = fread( head, 256, 1, fp );
  82.     fclose( fp );
  83.     if( temp < 1 )return 1;
  84.     if( DWORD(head+0) != 0x32564f4d )return 58;
  85.     if( DWORD(head+4) != 16 )return 58;
  86.     if( DWORD(head+16) != 320 )return 58;
  87.     if( DWORD(head+20) != 240 )return 58;
  88.         /* read */
  89.     for( i=0 ; i<6 ; i++ )sndNum[i] = BYTE( head + 48 + i );
  90.     for( i=0 ; i<8 ; i++ )sndNum[ 6 + i ] = BYTE( head + 64 + i );
  91.     for( i=0 ; i<14 ; i++ )
  92.     {
  93.         temp = BYTE( head + 136 + i );
  94.         if( temp >= 128 )temp = temp - 256;
  95.         if( temp < -64 )temp = -64;
  96.         if( temp > 63 )temp = 63;
  97.         sndPan[i] = temp;
  98.     }
  99.     sndPan[14] = sndPan[13] ;
  100.     mainWait = DWORD( head + 28 );    /* âEâGâCâg */
  101.     timingMode = BYTE( head + 150 ) & 1 ;    /* timing mode */
  102.     rect[0] = WORD( head + 32 ); rect[1] = WORD( head + 34 );    /* ì└òW */
  103.     rect[2] = WORD( head + 36 ); rect[3] = WORD( head + 38 );
  104.     if( rect[0]==0 && rect[1]==0 && rect[2]==0 && rect[3]==0 )
  105.     {
  106.         rect[2] = 319;
  107.         rect[3] = 239;
  108.     }
  109.  
  110.     for( i=0 ; i<10 ; i++ )
  111.     {
  112.         for( j=0 ; j<16 ; j++ )
  113.             fileName[i][j] = '\0' ;
  114.     }
  115.     for( i=0 ; i<8 ; i++ )
  116.     {
  117.         for( j=0 ; j<8 ; j++ )
  118.         {
  119.             fileName[i][j] = head[ 72 + i*8 + j ] ;
  120.         }
  121.     }
  122.     for( j=0 ; j<8 ; j++ )
  123.     {
  124.         fileName[8][j] = head[ 40 + j ] ;
  125.     }
  126.     for( j=0 ; j<8 ; j++ )
  127.     {
  128.         fileName[9][j] = head[ 56 + j ] ;
  129.     }
  130. /*        î│é╠âfü[â^é≡æ╕Ådé╖éΘé╜é▀,âNâèâAü[é═éΓé▀éΘ
  131.     for( i=0 ; i<10 ; i++ )
  132.     {
  133.         if( fileName[i][0] == '\0' )
  134.         {
  135.             for( j=0 ; j<8 ; j++ )
  136.                 fileName[i][j] = '\0' ;
  137.         }
  138.     }
  139. */
  140.         /* ò\Īâpâlâï âAâ^âbâ` */
  141.     MMI_SendMessage( edtDialogId[0], MM_ATTACH, 1, baseDialogId ) ;
  142.         /* ò\Īâpâlâïé╓âfü[â^é≡ô]æù */
  143.     for( i=0 ; i<14 ; i++ )
  144.     {
  145.         MMI_SendMessage( edtNumId[i], MM_GETNUMBOX, 5,
  146.                         &var, &min, &max, &delta, &ptColumn ) ;
  147.         MMI_SendMessage( edtNumId[i], MM_SETNUMBOX, 5,
  148.                         sndNum[i], min, max, delta, ptColumn ) ;
  149.     }
  150.     for( i=0 ; i<15 ; i++ )
  151.     {
  152.         MMI_SendMessage( edtPNumId[i], MM_GETNUMBOX, 5,
  153.                         &var, &min, &max, &delta, &ptColumn ) ;
  154.         MMI_SendMessage( edtPNumId[i], MM_SETNUMBOX, 5,
  155.                         sndPan[i], min, max, delta, ptColumn ) ;
  156.  
  157.         MMI_SendMessage( edtScroId[i], MM_GETSCROLL, 5,
  158.                         &prt, &min, &max, &len, &page ) ;
  159.         MMI_SendMessage( edtScroId[i], MM_SETSCROLL, 5,
  160.                         sndPan[i], min, max,len, page ) ;
  161.     }
  162.     MMI_SendMessage( edtWNumId[0], MM_GETNUMBOX, 5,
  163.                     &var, &min, &max, &delta, &ptColumn ) ;
  164.     MMI_SendMessage( edtWNumId[0], MM_SETNUMBOX, 5,
  165.                     mainWait, min, max, delta, ptColumn ) ;
  166.     for( i=0 ; i<4 ; i++ )
  167.     {
  168.         MMI_SendMessage( edtRecNumId[i], MM_GETNUMBOX, 5,
  169.                         &var, &min, &max, &delta, &ptColumn ) ;
  170.         MMI_SendMessage( edtRecNumId[i], MM_SETNUMBOX, 5,
  171.                         rect[i], min, max, delta, ptColumn ) ;
  172.     }
  173.     for( i=0 ; i<2 ; i++ )    /* â{â^âôâNâèâAü[ */
  174.         MTL_resetFlagObj( edtTIconId[i], (~(MS_UNSELECT | MS_TOGGLE)) ) ;
  175.     MTL_setFlagObj( edtTIconId[timingMode+0], (MS_UNSELECT | MS_TOGGLE) ) ;
  176.     for( i=0 ; i<10 ; i++ )
  177.         MMI_SendMessage( edtSFMesId[i], MM_SETMSG, 1, fileName[i] );
  178.  
  179.     MMI_SendMessage( edtDialogId[21], MM_DETACH, 0 ) ;    /* ch71 detach */
  180.     MMI_SendMessage( edtDialogId[22], MM_DETACH, 0 ) ;
  181.  
  182.     MMI_SendMessage( edtDialogId[0], MM_SHOW, 0 ) ;        /* î⌐é╣éΘ */
  183.                                                         /* ch71 attach */
  184.     MMI_SendMessage( edtDialogId[21], MM_ATTACH, 1, edtDialogId[2] ) ;
  185.     MMI_SendMessage( edtDialogId[22], MM_ATTACH, 1, edtDialogId[3] ) ;
  186.  
  187.     ch71Flag = -1 ;
  188.     ch71ckeck() ;            /* ch71Flag = -1é╠é╞é½é═init */
  189.  
  190.     MMI_ExecSystem() ;        /* Dialogò\Īé╓ÑÑÑâCâxâôâgâïü[âv */
  191.  
  192.     MMI_SendMessage( edtDialogId[0], MM_ERASE, 0 ) ;
  193.     MMI_SendMessage( edtDialogId[0], MM_DETACH, 0 ) ;
  194.  
  195.     error = 0 ;
  196.     if( setFlag == TRUE )
  197.     {
  198.         for( i=0 ; i<6 ; i++ )BYTE( head + 48 + i ) = sndNum[i];
  199.         for( i=0 ; i<8 ; i++ )BYTE( head + 64 + i ) = sndNum[ 6 + i ];
  200.         for( i=0 ; i<14 ; i++ )
  201.         {
  202.             temp = sndPan[i];
  203.             if( temp < -64 )temp = -64;
  204.             if( temp > 63 )temp = 63;
  205.             BYTE( head + 136 + i ) = temp;
  206.         }
  207.         DWORD( head + 28 ) = mainWait;    /* âEâGâCâg */
  208.         BYTE( head + 150 ) = ( (BYTE( head + 150 ) & 0xfe) | timingMode ) ;
  209.                                         /* timing mode */
  210.         if( rect[0] > rect[2] )
  211.         {        /* ì└òW */
  212.             temp = rect[2]; rect[2] = rect[0]; rect[0] = temp;
  213.         }
  214.         if( rect[1] > rect[3] )
  215.         {
  216.             temp = rect[3]; rect[3] = rect[1]; rect[1] = temp;
  217.         }
  218.         WORD( head + 32 ) = rect[0]; WORD( head + 34 ) = rect[1];
  219.         WORD( head + 36 ) = rect[2]; WORD( head + 38 ) = rect[3];
  220.  
  221.         for( i=0 ; i<8 ; i++ )
  222.         {
  223.             for( j=0 ; j<8 ; j++ )
  224.             {
  225.                 head[ 72 + i*8 + j ] = fileName[i][j] ;
  226.             }
  227.         }
  228.         for( j=0 ; j<8 ; j++ )
  229.         {
  230.             head[ 40 + j ] = fileName[8][j] ;
  231.         }
  232.         for( j=0 ; j<8 ; j++ )
  233.         {
  234.             head[ 56 + j ] = fileName[9][j] ;
  235.         }
  236.  
  237.         for( i=0 ; i<6 ; i++ ){ /* write protect é╠ÅΩìç6ë±òKùv */ 
  238.             if(
  239.                 ( fp = fopen( namemov, "r+b" ) ) != NULL
  240.             )goto sv06;
  241.         }
  242.         error = 2 ;
  243.         goto sv07 ;
  244.     sv06:
  245.         fseek( fp, 0, SEEK_SET );
  246.         temp = fwrite( head, 256, 1, fp );
  247.         fclose( fp );
  248.         if( temp < 1 )error = 2;
  249.     sv07:
  250.         if( error == NOERR )
  251.         {
  252.             extern int playCheck() ;
  253.             int frame,x0,y0,x1,y1,wsize;
  254.  
  255.             error
  256.              = mov_memory_play_init( namemov, playCheck,&frame,&x0,&y0,&x1,&y1,
  257.              &wsize );
  258.  
  259.             if( error == NOERR )
  260.                 error = editFrame( namemov, fileName, ch71Flag ) ;
  261.         }
  262.         if( error == NOERR )goto sv01 ;
  263.     }
  264.     else
  265.     {
  266.         return NOERR ;
  267.     }
  268.  
  269.     if( error )
  270.     {
  271.         errorCheck( error ) ;
  272.     }
  273.  
  274.     return NOERR ;
  275. }
  276.  
  277. /* ch71(edtDialogId[21ü`22])é╠ùLî°û│î°é≡â`âFâbâNé╖éΘ */
  278. ch71ckeck()
  279. {
  280.     int i, n ;
  281.  
  282.     n = 0 ;
  283.     for( i=0 ; i<8 ; i++ )
  284.     {
  285.         if( (DWORD( fileName[i] )!=0) || (DWORD( fileName[i]+4 )!=0) )
  286.         {
  287.                 n = -1 ;
  288.                 break ;
  289.         }
  290.     }
  291.     if( n )
  292.     {
  293.         if( ch71Flag != 0 )
  294.         {
  295.             MTL_setAtrObj( edtDialogId[21], MS_DSPONLYL40 ) ;
  296.             MMI_SendMessage( edtDialogId[21], MM_ERASE, 0 ) ;
  297.  
  298.             MMI_SendMessage( edtDialogId[22], MM_SHOW, 0 ) ;
  299.             MTL_resetAtrObj( edtDialogId[22], (~MS_DSPONLYL40) ) ;
  300.         }
  301.         ch71Flag = 0 ;
  302.     }
  303.     else
  304.     {
  305.         if( ch71Flag != 1 )
  306.         {
  307.             MMI_SendMessage( edtDialogId[21], MM_SHOW, 0 ) ;
  308.             MTL_resetAtrObj( edtDialogId[21], (~MS_DSPONLYL40) ) ;
  309.  
  310.             MTL_setAtrObj( edtDialogId[22], MS_DSPONLYL40 ) ;
  311.             MMI_SendMessage( edtDialogId[22], MM_ERASE, 0 ) ;
  312.         }
  313.         ch71Flag = 1 ;
  314.     }
  315.     return NOERR ;
  316. }
  317.  
  318. /*    initDataIRCEDT:edtNumId[0ü`13]:MJ_NUMBOXL40é╠î─é╤Åoé╡è╓Éö    */
  319. int    edtNumFunc(kobj, messId, argc, pev, trigger)